home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 9 / FM Towns Free Software Collection 9.iso / t_os / tool / nami / nami.bas next >
BASIC Source File  |  1994-11-16  |  7KB  |  169 lines

  1. 10010 '--------------------------------------------------------------------
  2. 10020 '
  3. 10030 '    波の合成
  4. 10040 '
  5. 10050 '                                              Copyright (C) TeC 1994
  6. 10060 '--------------------------------------------------------------------
  7. 10070 SCREEN 0 : SCREEN@ 0
  8. 10080 WINDOW(-.1!,10.1!)-(1.1!,-10.1!)
  9. 10090 'DIM SE01(5795),SE02(1647),SE03(4014),SE04(18819),SE05(7189)      '**
  10. 10100 'DIM SE06(16507),SE07(4533),SE08(8348),SE09(33025),SE10(35375)    '**
  11. 10110 'LOAD@"se_01.snd",SE01                                            '**
  12. 10120 'LOAD@"se_02.snd",SE02                                            '**
  13. 10130 'LOAD@"se_03.snd",SE03                                            '**
  14. 10140 'LOAD@"se_04.snd",SE04                                            '**
  15. 10150 'LOAD@"se_05.snd",SE05                                            '**
  16. 10160 'LOAD@"se_06.snd",SE06                                            '**
  17. 10170 'LOAD@"se_07.snd",SE07                                            '**
  18. 10180 'LOAD@"se_08.snd",SE08                                            '**
  19. 10190 'LOAD@"se_09.snd",SE09                                            '**
  20. 10200 'LOAD@"se_10.snd",SE10                                            '**
  21. 10210 DIM A(10),f(10),θ(10),Y(10),A$(13)
  22. 10220 PALETTE  1,[ 63,127,255]
  23. 10230 PALETTE  2,[ 63,255,127]
  24. 10240 PALETTE  3,[131,  0, 89]
  25. 10250 PALETTE  4,[223,223,  0]
  26. 10260 PALETTE  5,[  0,143,143]
  27. 10270 PALETTE  6,[ 63,127,255]
  28. 10280 PALETTE  7,[ 63,255,127]
  29. 10290 PALETTE  8,[131,  0, 89]
  30. 10300 PALETTE  9,[223,223,  0]
  31. 10310 PALETTE 10,[  0,143,143]
  32. 10320 PALETTE 11,[255,255,255]
  33. 10330 PALETTE 12,[ 63, 63, 63]
  34. 10340 PALETTE 13,[127,127,127]
  35. 10350 PALETTE 14,[191,191,191]
  36. 10360 π=3.14159!
  37. 10370 A$( 0)="  "
  38. 10380 A$( 1)="☆"
  39. 10390 A$( 2)="画面の上下方向は±10、左右方向は-0.1秒~+1.1秒です。"
  40. 10400 A$( 3)="今から入力する波のデータは、   個目です。(残り    )"
  41. 10410 A$( 4)="Asin(ωt+θ)    ω=2πf"
  42. 10420 A$( 5)="振幅A"
  43. 10430 A$( 6)="周波数f[濔"
  44. 10440 A$( 7)="位相θ[°]"
  45. 10450 A$( 8)="  を入力してください。"
  46. 10460 A$( 9)="今入力した波のデータは、   個目です。(残り    )    "
  47. 10470 A$(10)="処理 >>>     入力     演算     取り消す     取り消して演算"
  48. 10480 A$(11)="データがありません"
  49. 10490 A$(12)="データがいっぱいです"
  50. 10500 A$(13)="プログラムを終了する >>>     No     Yes"
  51. 10510 N=1
  52. 10520 'IF D=2 THEN PCMPLAY SE05,127 ELSE PCMPLAY SE03,127               '**
  53. 10530 CLS
  54. 10540 COLOR 7
  55. 10550 LOCATE  0, 0 : PRINT A$(2)
  56. 10560 LOCATE  0, 1 : PRINT A$(3)
  57. 10570 COLOR 6
  58. 10580 LOCATE 28, 1 : PRINT USING"##";N
  59. 10590 LOCATE 48, 1 : PRINT USING"##";11-N
  60. 10600 COLOR 7
  61. 10610 LOCATE  0, 3 : PRINT A$(4)
  62. 10620 LOCATE  0, 5 : PRINT A$(5)+A$(8)
  63. 10630 LOCATE  2, 6 : INPUT"",IN$ : CY=6 : GOSUB *文字判定
  64. 10640 A(N)=IN
  65. 10650 LOCATE  0, 8 : PRINT A$(6)+A$(8)
  66. 10660 LOCATE  2, 9 : INPUT"",IN$ : CY=9 : GOSUB *文字判定
  67. 10670 f(N)=IN
  68. 10680 LOCATE  0,11 : PRINT A$(7)+A$(8)
  69. 10690 LOCATE  2,12 : INPUT"",IN$ : CY=12 : GOSUB *文字判定
  70. 10700 θ(N)=IN
  71. 10710 LOCATE  0, 1 : PRINT A$(9)
  72. 10720 COLOR 6
  73. 10730 LOCATE 24, 1 : PRINT USING"##";N
  74. 10740 LOCATE 44, 1 : PRINT USING"##";10-N
  75. 10750 COLOR 7
  76. 10760 LOCATE  0,15 : PRINT A$(10)
  77. 10770 D=0 : DD=0
  78. 10780 COLOR 6
  79. 10790 LOCATE  10,15 : PRINT A$(1)
  80. 10800 IN$=INKEY$ : IF IN$="" THEN 10800
  81. 10810 IF IN$=CHR$(&H1C) THEN D=D+1 : IF D>3 THEN D=3 ELSE D=D : GOTO 10930
  82. 10820 IF IN$=CHR$(&H1D) THEN D=D-1 : IF D<0 THEN D=0 ELSE D=D : GOTO 10930
  83. 10830 IF IN$=CHR$(&H0D) THEN ON D GOTO 11130,10520,11050 ELSE 10800
  84. 10840 'PCMPLAY SE03,127                                                 '**
  85. 10850 N=N+1 : IF N<11 THEN 10520
  86. 10860 N=10
  87. 10870 CLS
  88. 10880 COLOR 7
  89. 10890 LOCATE  2,23 : PRINT A$(12)
  90. 10900 'PCMPLAY SE09,127                                                 '**
  91. 10910 TIME$="00:00:00"
  92. 10920 IF TIME<4 THEN 10920 ELSE 11130
  93. 10930 'PCMPLAY SE02,127                                                 '**
  94. 10940 ON D GOTO 10970,11000,11030
  95. 10950 LOCATE 10,15 : PRINT A$(1)
  96. 10960 LOCATE 19,15 : PRINT A$(0) : GOTO 10800
  97. 10970 LOCATE 10,15 : PRINT A$(0)
  98. 10980 LOCATE 19,15 : PRINT A$(1)
  99. 10990 LOCATE 28,15 : PRINT A$(0) : GOTO 10800
  100. 11000 LOCATE 19,15 : PRINT A$(0)
  101. 11010 LOCATE 28,15 : PRINT A$(1)
  102. 11020 LOCATE 41,15 : PRINT A$(0) : GOTO 10800
  103. 11030 LOCATE 28,15 : PRINT A$(0)
  104. 11040 LOCATE 41,15 : PRINT A$(1) : GOTO 10800
  105. 11050 'PCMPLAY SE06,127                                                 '**
  106. 11060 N=N-1 : IF N>0 THEN 11140
  107. 11070 'PCMPLAY SE09,127                                                 '**
  108. 11080 CLS
  109. 11090 COLOR 7
  110. 11100 LOCATE  2,23 : PRINT A$(11)
  111. 11110 TIME$="00:00:00"
  112. 11120 IF TIME<4 THEN 11120 ELSE 10510
  113. 11130 'PCMPLAY SE04,127                                                 '**
  114. 11140 CLS 1
  115. 11150 FOR I=-1 TO 11
  116. 11160    LINE(I/10,10)-(I/10,-10),PSET,%12
  117. 11170 NEXT I
  118. 11180 LINE(.5!,10)-(.5!,-10),PSET,%13 : LINE(1,10)-(1,-10),PSET,%14
  119. 11190 FOR I=-9 TO 9
  120. 11200    LINE(.005!,I)-(-.005!,I),PSET,%13
  121. 11210 NEXT I
  122. 11220 LINE(.01!,-5)-(-.01!,-5),PSET,%13:LINE(.02!,-10)-(-.02!,-10),PSET,%13
  123. 11230 LINE(.01!, 5)-(-.01!, 5),PSET,%13:LINE(.02!, 10)-(-.02!, 10),PSET,%13
  124. 11240 LINE(-.1!,0)-(1.1!,0),PSET,%14 : LINE(0,10)-(0,-10),PSET,%14
  125. 11250 FOR TC=-1000 TO 11000
  126. 11260    T=TC/10000
  127. 11270    Y(0)=0
  128. 11280    FOR I=1 TO N
  129. 11290       IN$=INKEY$ : IF IN$=CHR$(&H18) THEN GOSUB *中断
  130. 11300       Y(I)=A(I)*SIN(2*π*f(I)*T+θ(I)*π/180)
  131. 11310       Y(0)=Y(0)+Y(I)
  132. 11320       PSET(T,Y(I)),%I
  133. 11330    NEXT I
  134. 11340    PSET(T,Y(0)),%11
  135. 11350 NEXT TC
  136. 11360 'IF DD=0 THEN PCMPLAY SE10,127                                    '**
  137. 11370 D=1
  138. 11380 COLOR 7
  139. 11390 LOCATE 9,0 : PRINT A$(13)
  140. 11400 COLOR 6
  141. 11410 LOCATE 35,0 : PRINT A$(1)
  142. 11420 IN$=INKEY$ : IF IN$="" THEN 11420
  143. 11430 IF IN$=CHR$(&H1C) THEN D=0 ELSE 11460
  144. 11440 'PCMPLAY SE02,127                                                 '**
  145. 11450 LOCATE 35,0 : PRINT A$(0) : LOCATE 42,0 : PRINT A$(1) : GOTO 11420
  146. 11460 IF IN$=CHR$(&H1D) THEN D=1 ELSE 11490
  147. 11470 'PCMPLAY SE02,127                                                 '**
  148. 11480 LOCATE 35,0 : PRINT A$(1) : LOCATE 42,0 : PRINT A$(0) : GOTO 11420
  149. 11490 IF IN$=CHR$(&H0D) THEN ON D GOTO 10510 ELSE 11420
  150. 11500 'PCMPLAY SE08,127                                                 '**
  151. 11510 TIME$="00:00:00"
  152. 11520 IF TIME<2 THEN 11520
  153. 11530 CLS
  154. 11540 WINDOW(0,0)-(639,479)
  155. 11550 PALETTE
  156. 11560 CLEAR
  157. 11570 END
  158. 11580 *文字判定
  159. 11590 'PCMPLAY SE01,127                                                 '**
  160. 11600 IN=VAL(IN$)
  161. 11610 IF NOT IN=0 THEN RETURN
  162. 11620 LOCATE  2,CY : PRINT SPC(78)
  163. 11630 IF IN=0 THEN LOCATE  2,CY : PRINT"0"
  164. 11640 RETURN
  165. 11650 *中断
  166. 11660 'PCMPLAY SE07,127                                                 '**
  167. 11670 I=N : TC=11000 : DD=1
  168. 11680 RETURN 11330
  169.